Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2010, 00:55
Новичок на форуме
Отправить личное сообщение для schnitzer Посмотреть профиль Найти все сообщения от schnitzer
 
Регистрация: 19.10.2010
Сообщений: 8

Загрузка новой таблицы на странице, не перегружая ее.


Есть страница, скажем, сделанная на каркасе таблицы.

Одна из ячеек - таблица с картинками, разной информацией и т.д.
Еще одна ячейка главной таблицы-ссылки.

Как сделать, что бы при вызове в ячейку загружалась новая таблица?
Как это лучше реализовать, какой скрипт искать, по поисковику найти не могу, т.к. сложно сформулировать вопрос.
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2010, 11:35
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Это называется технологией AJAX - асинхронная подргузка.
Все фреймворки предоставляют удобный способ работы с ajax'ом.
Думаю в jquery это проще всего.
Ответить с цитированием
  #3 (permalink)  
Старый 21.10.2010, 16:25
Аватар для cyberx
Аспирант
Отправить личное сообщение для cyberx Посмотреть профиль Найти все сообщения от cyberx
 
Регистрация: 02.02.2010
Сообщений: 50

Вот неплохая функция ajax

function Ajax(options)
 {

  options = {
             type: options.type || "POST",
             url: options.url || "",
             timeout: options.timeout || 5000,
             onComplete: options.onComplete || function(){},
             onError: options.onError || function(){},
             onSuccess: options.onSuccess || function(){},
             data: options.data || ""
            };

  var xml = navigator.appName == "Microsoft Internet Explorer" ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
  xml.open(options.type, options.url, true);
  var timeoutLength = options.timeout;
  var requestDone = false;
  setTimeout(function()
   {
    requestDone = true;
   },timeoutLength);
  xml.onreadystatechange = function()
   {
    if(xml.readyState == 4 && !requestDone)
	 {
      if(httpSuccess(xml))
	   {
        options.onSuccess(httpData(xml,options.type));
       }
	  else
	   {
        options.onError();
       }
      options.onComplete();
      xml = null;
    }
  };
 xml.send(options.data);

 function httpSuccess(r) 
  {
   try
    {
     return !r.status && location.protocol == "file:" ||
     (r.status >= 200 && r.status < 300) ||
      r.status == 304 ||
      navigator.userAgent.indexOf("Safari") >= 0
      && typeof r.status == "undefined";
     }
	catch(e)
	{}
   return false;
  }

 function httpData(r,type)
  {
   var ct = r.getResponseHeader("content-type");
   var data = !type && ct && ct.indexOf("xml") >= 0;
   data = type == "xml" || data ? r.responseXML : r.responseText;
   if(type == "script")
   eval.call(window,data);
   return data;
  }
 }


Используете так

Ajax({
          url: "page.php",
          type: "POST",
          data: 'process='+'value',
          onSuccess: function(msg) 
		              {
                               document.getElementById('pageContent').innerHTML = msg;
                              }
         });


В url записываете страницу куда хотите отправить асинхронный запрос, в переменной msg будет сам результат. Вместо 'pageContent' вставьте тот id элемента куда хотите вставить ответ. Можете передать данные через data. page.php получить так $_POST['process'];

Последний раз редактировалось cyberx, 21.10.2010 в 16:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск